1. Technical Field
The present invention relates generally to computer systems, and more specifically to techniques for making procedure calls.
2. Background Art
Programming languages provide facilities for making procedure calls, whereby code which is reusable can be placed in a defined location and executed when needed. Parameters can be passed to called procedures, and results returned. As used herein, the term procedure will be used in a generic sense; program segments which are referred to in particular instances as procedures, functions, and subroutines will all be referred to herein as procedures.
Details of procedure calling conventions differ with different programming languages. Some parameters may be passed in registers, on a procedure stack, or in memory blocks pointed to by pointers held in a register or a stack location. Because of different calling conventions used by different languages, procedure calls must be made to procedures originally written in the same language, or another language using the same calling conventions. If it is desired to make a call to a procedure originally written in a different language, and the identity of the original language is known, special steps can sometimes be taken to restructure the call to function correctly with such procedure. This restructuring usually requires modification of the call at the assembly language level.
In many computer systems, including virtually all large and medium size systems, common libraries of procedures are maintained for standard and often used functions. These procedures, sometimes referred to as system services are called from application programs, freeing an applications programmer from writing and debugging code to perform common functions. Library functions can be linked to an application program at link time, or they may be dynamically linked at execution time if this is supported by the operating system.
The language calling convention problem described above exists with the use of procedure libraries. A library procedure must typically be written in each language supported by the system, so that multiple procedures exist for performing the same library function. An alternative is to have one or a limited number of procedures written in a particular language, and require applications programmers to perform whatever steps are necessary in order to call procedures written in different languages.
When several computer systems are connected together through a local network, it is desirable to share resources as much as possible. This is generally not feasible for library procedures, because prior art systems do not make provision for transparently calling procedures which are located on a different machine. This is especially true for non-homogeneous networks, in which procedure calling conventions can differ between different system architectures.
It would be desirable for a system to provide the ability for applications programs to call library procedures located on remote nodes attached to a network. It would further be desirable for such a system to allow the applications programs to call library procedures without knowing whether they are located on the local network node or on a remote node. It would also be desirable for such calls to be made to procedures written in a language using different procedure calling conventions without the necessity of language specific translations being made by the applications programs.